#include <stdio.h>

int my_add(int x, int y){
	return x + y;
}

int my_sub(int x, int y){
	return x - y;
}

int main(int argc, const char *argv[])
{
	// 定义了一个函数指针数组 数组中有2个元素
	// 每个元素都是一个 能指向 返回值为 int 形参为 (int, int)的函数的函数指针
	int (*s[2])(int, int) = {NULL};
	s[0] = my_add;
	s[1] = my_sub;
	//int (*s[2])(int, int) = {my_add, my_sub}; // 初始化的写法
	
	// 也可以通过函数指针数组的元素调用函数
	printf("%d\n", s[0](10, 20)); // 30
	printf("%d\n", s[1](10, 20)); // -10

	// 因为我们实际开发的过程的 不同函数的参数、返回值一般都是不一样的
	// 无法将指向不同函数的函数指针放在同一个函数指针数组中
	// 所以 函数指针数组 一般用不到

	return 0;
}
